#pragma once
#include "Includes.h"
#include "CGlobalVarsBase.h"
#include "IBaseClientDLL.h"
#include "IClientEntityList.h"
#include "CInput.h"
#include "IVEngineClient.h"
#include "IEngineTrace.h"
#include "VmtHooks.h"
#include "Aimbot.h"
#include "Knifebot.h"
#include "BHop.h"
#include "Speedhack2.h"
#include "RadarClass.h"
#include "Crosshair.h"
#include "Noflash.h"
#include "NoHands.h"
#include "NoSmoke.h"
#include "EasyTrigger.h"
#include "Cheats.h"
#include "Autopistol.h"
#include "HudRadar.h"
#include "ESP.h"
#include "Font.h"
#include "Render.h"
#include "Netvars.h"
#include "FindPattern.h"
#include "IMaterialSystem.h"
#include "IMaterial.h"
#include "IGameEvent.h"
#include "GameEventManager.h"
#include "ConfigManager.h"

typedef toolkit::VMTManager hook_t;

class HL2Interfaces
{
public:
	void Start();
	bool WaitForGame();
	void LoadInterfaces();
public:
	CGlobalVarsBase*   g_pGlobals;
	IBaseClientDLL*	   g_pClient;
	IClientEntityList* g_pEntList;
	CInput*			   g_pInput;
	IVEngineClient*	   g_pEngine;
	IEngineTrace*	   g_pEngineTrace;
	RadarClass*		   g_pRadar;
	IMaterialSystem*   g_pMaterialSystem;
	IGameEventManager2* g_pGameEventManager;
public:
	HINSTANCE		   hModuleBase;
public:
	hook_t*			   g_pClientHooks;
	hook_t*			   g_pEngineHooks;
	hook_t*			   g_pPanelHooks;
	hook_t*			   g_pInputHooks;
	hook_t*			   g_pMaterialHooks;
};

extern HL2Interfaces g_pInterfaces;